scrapy -- CrawlSpider类
全部标签 我的蜘蛛可以工作,但我无法下载我在.html文件中抓取的网站正文。如果我写self.html_fil.write('test')那么它工作正常。我不知道如何将tulpe转换为字符串。我使用Python3.6蜘蛛:classExampleSpider(scrapy.Spider):name="example"allowed_domains=['google.com']start_urls=['http://google.com/']def__init__(self):self.path_to_html=html_path+'index.html'self.path_to_header=h
我正在使用scrapy框架抓取一个站点,但在单击用于打开另一个页面的javascript链接时遇到了问题。我可以将页面上的代码识别为:Accountant 谁能建议我如何在scaroy中执行该javascript并通过它获取另一个页面,我可以从该页面获取数据。提前致谢 最佳答案 查看下面有关如何将scrapy与selenium一起使用的片段。抓取速度会变慢,因为您不只是下载html,而且您将获得对DOM的完全访问权限。注意:我已经复制粘贴了这段代码,因为之前提供的链接不再有效。#Snippetimportedfromsni
请看这段html代码:online428xxfantasia我想获取里面的文本(在本例中为428)。我用过这个:defparse(self,response):sel=Selector(response)cams=sel.css('header.online')forcamincams:printcam.css('text').extract()我想我使用了正确的css选择器,但我得到的结果是空的。有什么帮助吗? 最佳答案 CSS选择器don'tnormallyhavesyntaxtoextracttextcontent.但是Scr
我正在抓取一个网站来检查各种产品的库存状态。不幸的是,这需要实际点击产品页面上的“添加到购物车”并检查下一页的消息以确定是否有库存(即它需要解析两个响应)。我关注了excellentdocumentation对于这种情况,我编写了我的解析函数以返回一个Request对象,该对象带有对我的辅助解析函数的回调。但是,这个函数很少被调用。大多数产品只会在日志中看到“Beforereturnrequest”,但对于一小部分产品,它确实会被正确调用。知道这里出了什么问题吗?我已经没有想法了。foo/spiders/atlantic_firearms_spider.py:fromscrapy.co
API应该允许包含用户想要抓取的URL的任意HTTPget请求,然后Flask应该返回抓取的结果。以下代码适用于第一个http请求,但在twistedreactor停止后,它不会重新启动。我什至可能没有以正确的方式解决这个问题,但我只想在Heroku上放置一个RESTfulscrapyAPI,到目前为止我能想到的就是这些。是否有更好的方法来构建此解决方案?或者我如何允许scrape_it在不停止扭曲react器(无法再次启动)的情况下返回?fromflaskimportFlaskimportosimportsysimportjsonfromn_grams.spiders.n_gram_
我是python和scrapy的新手,我正在学习dmoz教程。作为教程建议的开始URL的一个小变体,我从dmoz示例站点中选择了一个日语类别,并注意到我最终获得的提要导出显示了unicode数值而不是实际的日语字符。看来我需要使用TextResponse不知何故,但我不确定如何让我的蜘蛛使用该对象而不是基本Response对象。我应该如何修改我的代码以在我的输出中显示日语字符?如何去掉方括号、单引号和包装输出值的“u”?最终,我想要输出sayオンラインシェップ(这些是日文字符)代替的当前输出[u'\u30aa\u30f3\u30e9\u30a4\u30f3\u30b7\u30e7\u3
我无法理解如何在我自己的从CrawlSpider继承的Spider中使用规则字段。我的蜘蛛正试图在旧金山的比萨饼黄页列表中爬行。我试图让我的规则保持简单,只是为了看看蜘蛛是否会爬过响应中的任何链接,但我没有看到它发生。我唯一的结果是它产生对下一页的请求,然后产生对后续页面的请求。我有两个问题:1.蜘蛛收到响应后是否先处理规则再调用回调?或相反亦然?2.规则何时适用?编辑:我想到了。我覆盖了CrawlSpider的解析方法。在查看该类中的parse方法后,我意识到这是它检查规则并抓取这些网站的地方。注意:了解您要覆盖的内容这是我的代码:fromscrapy.contrib.spiders
现在我有2个蜘蛛,我想做的是Spider1转到url1如果url2出现,用url22/。还使用管道保存url1的内容。蜘蛛2转到url2并做一些事情。由于两个蜘蛛的复杂性,我想将它们分开。我尝试使用scrapycrawl的结果:defparse(self,response):p=multiprocessing.Process(target=self.testfunc())p.join()p.start()deftestfunc(self):settings=get_project_settings()crawler=CrawlerRunner(settings)crawler.craw
我使用Scrapy在python中编写了一个脚本,通过代理向网页发送请求,而不更改settings.py或DOWNLOADER_MIDDLEWARES。它现在工作得很好。然而,我唯一不能使用的是创建一个代理列表,这样如果一个失败,另一个将被使用。我如何抽动这部分os.environ["http_proxy"]="http://176.58.125.65:80"以逐个获取代理列表,因为它只支持一个。对此的任何帮助将不胜感激。这是我到目前为止尝试过的(工作中的一个):importscrapy,osfromscrapy.crawlerimportCrawlerProcessclassProx
相关代码defstart_requests(self):requests=[Request(url['url'],meta=url['meta'],callback=self.parse,errback=self.handle_error)forurlinself.start_urlsifvalid_url(url['url'])]returnrequestsdefhandle_error(self,err):#ErrorsbeingsavedinDB#SoIdon'twantthemdisplayedinthelogs我有自己的代码用于在数据库中保存错误代码。我不希望它们显示在日志输